/*
 * Copyright 2022 The Open Islands Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.openislands.oi.operator;

import org.openislands.oi.constant.RoleType;
import org.openislands.oi.constant.JobType;
//import org.openislands.oi.scheduler.DAGOperatorIO;

import java.util.List;
import java.util.Map;

public class RuntimeConfig {
    private JobType jobType;
    private String name;
    private String module;
    private String entryPoint;
    private OperatorInput input;
    private OperatorOutput output;
    private RoleType role;
    private String nodeId;
    private Map<RoleType, List<String>> nodes;
    //resource
    private int numPartitions;
    private int numFederatedSenders;
    private String federatedMode;
    //service
    private Map<String, Map<String, String>> serviceAddresses;
    private Map<String, String> serviceParams;
    private Map<String, Object> operatorParams;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getModule() {
        return module;
    }

    public void setModule(String module) {
        this.module = module;
    }

    public Map<String, Object> getOperatorParams() {
        return operatorParams;
    }

    public void setOperatorParams(Map<String, Object> operatorParams) {
        this.operatorParams = operatorParams;
    }

    public OperatorInput getInput() {
        return input;
    }

    public void setInput(OperatorInput input) {
        this.input = input;
    }

    public OperatorOutput getOutput() {
        return output;
    }

    public void setOutput(OperatorOutput output) {
        this.output = output;
    }

    public Map<RoleType, List<String>> getNodes() {
        return nodes;
    }

    public void setNodes(Map<RoleType, List<String>> nodes) {
        this.nodes = nodes;
    }

    public RoleType getRole() {
        return role;
    }

    public void setRole(RoleType role) {
        this.role = role;
    }

    public String getNodeId() {
        return nodeId;
    }

    public void setNodeId(String nodeId) {
        this.nodeId = nodeId;
    }

    public Map<String, Map<String, String>> getServiceAddresses() {
        return serviceAddresses;
    }

    public void setServiceAddresses(Map<String, Map<String, String>> serviceAddresses) {
        this.serviceAddresses = serviceAddresses;
    }

    public Map<String, String> getServiceParams() {
        return serviceParams;
    }

    public void setServiceParams(Map<String, String> serviceParams) {
        this.serviceParams = serviceParams;
    }

    public String getFederatedMode() {
        return federatedMode;
    }

    public void setFederatedMode(String federatedMode) {
        this.federatedMode = federatedMode;
    }

    public String getEntryPoint() {
        return entryPoint;
    }

    public void setEntryPoint(String entryPoint) {
        this.entryPoint = entryPoint;
    }

    public JobType getJobType() {
        return jobType;
    }

    public void setJobType(JobType jobType) {
        this.jobType = jobType;
    }

    public int getNumPartitions() {
        return numPartitions;
    }

    public void setNumPartitions(int numPartitions) {
        this.numPartitions = numPartitions;
    }

    public int getNumFederatedSenders() {
        return numFederatedSenders;
    }

    public void setNumFederatedSenders(int numFederatedSenders) {
        this.numFederatedSenders = numFederatedSenders;
    }
}
